package com.flyzing.genl.util;

/**
 * @author yaoguangyao
 * @Date 2020年12月30日
 */
public class StringUtil {
    public static boolean isNotNull(String str) {
        return str != null && !str.trim().equals("");
    }

    public static boolean isNull(String str) {
        return str == null || str.trim().equals("");
    }
    
    public static boolean startWithNum(String str) {
    	return str.matches("^\\d+.*");
    }
    
	/**
	 * 将db中表名或列名中的下划线转换为驼峰
	 * @param str
	 * @param upperCatureName 首字母是否大写，如portal_test的p是否大写，t是一定转为大写的
	 * @return
	 */
	public static String convertUnderline(String str, boolean upperCatureName) {
		if(isNotNull(str) && str.indexOf("_") > -1) {
			String[] parts = str.split("_");
			StringBuffer sb = new StringBuffer();
			for(int i = 0; i < parts.length; i++) {
				if (isNull(parts[i])) {
					continue;
				}
				//upperCatureName为true表示str第一个字母需要转，或者以下划线分隔的从二个单词开始首字母需要转，并且不是数字开头
				if (((upperCatureName && i == 0) || i > 0) && !startWithNum(parts[i])) {
					sb.append(upperCatureName(parts[i]));
				} else {
					sb.append(parts[i]);
				}
			}
			return sb.toString();
		}
		return str;
	}
	
	/**
	 * 首字母大写
	 * @param str
	 * @return
	 */
	public static String upperCatureName(String str) {
		char[] cs = str.toCharArray();
		cs[0] -= 32;
		return String.valueOf(cs);
	}
	
	
}
